<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>作用域</title>
    <script>
        /*
        ********************************作用域*********************************
           -  作用域指一个变量的作用和范围
       在JS中一共有两种作用域：
                          1.全局作用域
            -直接编写在script标签中的js代码，都在全局作用域
            -全局作用域在页面打开时创建，页面关闭时销毁
            -在全局作用域中有一个全局对象，window：
                  代表浏览器的窗口，由浏览器创建，可直接使用
                  创建的变量、函数都是以window的属性保存的
            -全局作用域中的变量都是全局变量，在页面任意不分都可以访问到
         */
        var a=10;
        console.log(window.a);
        function fun(){
            console.log("我是fun函数");
        }
        window.fun();
        /*
        变量的声明提前
         - 使用var关键字声明的变量，会在所有代码被执行之前被声明
            如果变量声明不使用var关键字，则变量不会提前声明

         函数的声明提前
          -使用函数声明形式创建的函数：function 函数（）{}
            它会在所有代码执行之前就被创建,所以我们可以在函数声明
          -使用函数表达式创建的函数（var fun2=function（）{}；），不会被声明提前，所以不能提前使用
         */
        /*
                             2.函数作用域
          -调用函数时创建作用域，函数执行完毕后，函数作用域销毁
          -每次调用都会创建一个新的函数作用域，他们之间相互独立
          -在函数作用域中可以访问到全局作用域的变量，遵循就近原则
         */
        var c=33;
        function fun5(){
            c=10;             //在函数中，不适用var声明的变量就会成为全局变量
        }
        fun5();
        console.log(c);
    </script>
</head>
<body>

</body>
</html>